{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "153eef14",
   "metadata": {},
   "source": [
    "1. 编译器是一种翻译程序,它用于将源语言程序翻译成目标语言程序.\n",
    "2. 源语言程序: 某种程序设计语言写成的; 目标语言程序: 二进制表示的机器代码写的程序.\n",
    "3. 预处理指令#开始,他不是语言,不以;结尾"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3c6987a0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Release mode\r\n"
     ]
    }
   ],
   "source": [
    "// 常见的预处理指令\n",
    "// 1. #define: 定义一个符号常量,可以在代码中使用\n",
    "#define DEBUG\n",
    "// 2. #undef: 取消一个符号常量的定义\n",
    "#undef DEBUG\n",
    "// 3. #if,#elif,#else,#endif: 条件编译,如果符号常量被定义,则编译该代码块.多个条件可以使用&& ||连接起来\n",
    "// 4. #warning: 编译时发出一个警告信息,#error: 编译时发出一个错误信息. 一般配合if使用\n",
    "#if DEBUG\n",
    "Console.WriteLine(\"Debug mode\");\n",
    "#endif\n",
    "#if !DEBUG\n",
    "// #warning \"Not in debug mode\" \n",
    "Console.WriteLine(\"Release mode\");\n",
    "#endif"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".NET (C#)",
   "language": "C#",
   "name": ".net-csharp"
  },
  "language_info": {
   "name": "polyglot-notebook"
  },
  "polyglot_notebook": {
   "kernelInfo": {
    "defaultKernelName": "csharp",
    "items": [
     {
      "aliases": [],
      "name": "csharp"
     }
    ]
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
